Rendering 3D Data to Hogel Data

ABSTRACT

Methods and systems for rendering hogels, including receiving a set of 3D data at a node, the node comprising a graphics processing unit, storing at least a subset of the set of 3D data in a buffer, rendering a first hogel view from the subset of 3D data using the graphics processing unit, and rendering a second hogel view by accessing the stored subset of 3D data using the graphics processing unit, where the rendering of the second hogel view is performed substantially in series to the rendering of the first hogel view.

I. PRIORITY CLAIM

This application is a continuation of and claims priority from:

U.S. patent application Ser. No. 12,546,049, filed 24 Aug. 2009, titled “Converting 3D Data to Hogel Data” and naming Wesley A. Holler, et. al, as inventor(s), which in-turns claims priority from

U.S. Provisional Application No. 61/108,549, filed 26 Oct. 2008, titled “Systems and Methods for Converting 3D Data to Hogel Data” and naming Michael E. Weiblen, et. al, as inventor(s).

The above-referenced patents and/or patent applications are hereby incorporated by reference herein in their entirety.

II. GOVERNMENT CONTRACT STATEMENT

The U.S. Government has a paid-up license in this invention and the right in limited circumstances to require the patent owner to license others on reasonable terms as provided for by the terms of contract No. W91CRB-09-C-0031 awarded by RDECOM.

III. BACKGROUND

The invention relates generally to the field of rendering hogels and particularly to the field of converting 3D data to hogel data.

IV. SUMMARY

In one respect, disclosed is a method for rendering hogels, the method comprising receiving a set of 3D data at a node, the node comprising a graphics processing unit, storing at least a subset of the set of 3D data in a buffer, rendering a first hogel view from the subset of 3D data using the graphics processing unit, and rendering a second hogel view by accessing the stored subset of 3D data using the graphics processing unit, where the rendering of the second hogel view is performed substantially in series to the rendering of the first hogel view.

In another respect, disclosed is a system for rendering hogels, the system comprising one or more processors, and one or more memory units coupled to the processor, the system being configured to receive a set of 3D data at a node, the node comprising a graphics processing unit, store at least a subset of the set of 3D data in a buffer, render a first hogel view from the subset of 3D data using the graphics processing unit, and render a second hogel view by accessing the stored subset of 3D data using the graphics processing unit, where the rendering of the second hogel view is performed substantially in series to the rendering of the first hogel view.

In yet another respect, disclosed is a computer program product stored on a computer operable medium, the computer program product comprising software code being effective to receive a set of 3D data at a node, the node comprising a graphics processing unit, store at least a subset of the set of 3D data in a buffer, render a first hogel view from the subset of 3D data using the graphics processing unit, and render a second hogel view by accessing the stored subset of 3D data using the graphics processing unit, where the rendering of the second hogel view is performed substantially in series to the rendering of the first hogel view.

Numerous additional embodiments are also possible. In one or more various aspects, related articles, systems, and devices include but are not limited to circuitry, programming, electro-mechanical devices, or optical devices for effecting the herein referenced method aspects; the circuitry, programming, electro-mechanical devices, or optical devices can be virtually any combination of hardware, software, and firmware configured to effect the herein referenced method aspects depending upon the design choices of the system designer skilled in the art.

The foregoing is a summary and thus contains, by necessity, simplifications, generalizations and omissions of detail; consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. Other aspects, features, and advantages of the devices, processes, or other subject matter described herein will become apparent in the teachings set forth herein.

In addition to the foregoing, various other method, device, and system aspects are set forth and described in the teachings such as the text (e.g., claims or detailed description) or drawings of the present disclosure.

V. BRIEF DESCRIPTION OF THE DRAWINGS

Other aspects and advantages of the invention may become apparent upon reading the detailed description and upon reference to the accompanying drawings.

FIG. 1 is a block diagram illustrating a system for serially rendering 3D data to hogel data, in accordance with some embodiments.

FIG. 2 is a block diagram illustrating a system for serially and/or in parallel rendering 3D data to hogel data, in accordance with some embodiments.

FIG. 3 is a block diagram illustrating a system for synchronously distributing 3D data to one or more rendering nodes, in accordance with some embodiments.

FIG. 4 is a flow diagram illustrating a method for serially rendering 3D data to hogel data, in accordance with some embodiments.

FIG. 5 is a flow diagram illustrating a method for rendering serially and/or in parallel 3D data to hogel data, in accordance with some embodiments.

Brief description for the additional figures is provided in the detailed description section.

While the invention is subject to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and the accompanying detailed description. It should be understood, however, that the drawings and detailed description are not intended to limit the invention to the particular embodiments. This disclosure is instead intended to cover all modifications, equivalents, and alternatives falling within the scope of the present invention as defined by the appended claims.

VI. DETAILED DESCRIPTION

Certain terms are used throughout the following description and claims to refer to particular system components and configurations. As one skilled in the art will appreciate, companies may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . ”. Also, the terms “couple,” “couples,” “coupled,” or “coupleable” are intended to mean either an indirect or direct electrical or wireless connection. Thus, if a first device couples to a second device, that connection may be through a direct electrical, optical, wireless connection, etc. or through an indirect electrical, optical, wireless connection, etc. by means of other devices and connections.

One or more embodiments of the invention are described below. It should be noted that these and any other embodiments are exemplary and are intended to be illustrative of the invention rather than limiting. While the invention is widely applicable to different types of systems, it is impossible to include all of the possible embodiments and contexts of the invention in this disclosure. Upon reading this disclosure, many alternative embodiments of the present invention will be apparent to persons of ordinary skill in the art. Other embodiments may be utilized, and other changes may be made, without departing from the spirit or scope of the subject matter presented here.

In some embodiments, disclosed are systems and methods for rendering 3D data into hogel data. In some embodiments, a node may be configured to receive 3D data/commands and to render the data into multiple hogel views. In some embodiments, a single graphics processing unit may be used per rendering node to generate the multiple hogel views that may be assigned to that rendering node.

In some embodiments, the rendering node may be configured to receive 3D data/commands that are generated by a 3D application executing on a work station, for example. That is, the 3D data/commands may be generated by the application for use by typical graphics processing units configured to generate views for displaying on typical 2D displays. The 3D data/commands may be graphics commands from graphics languages such as OpenGL commands, DirectX commands, etc.

In some embodiments, each node may be configured to render multiple hogel views using the received 3D data/commands. In embodiments where a single graphics processing unit is used per rendering node, the graphics processing unit may be utilized serially to generate the multiple hogel views assigned to that rendering node. In some embodiments, the rendering may be performed one set at a time, such as one frame at a time.

In some embodiments, each of the rendering nodes may store the incoming 3D data/commands in a buffer. In some embodiments, the stored 3D data/commands may be retrieved and “replayed” in order for the graphics processing unit in the rendering node to serially render multiple hogel views.

In some embodiments, part of the rendering process or part of setting up the rendering process may be performed prior to the rendering of the hogel views. For example, certain rendering resources may be created and retained for use later during the renderings. In some embodiments, the creation and retaining of these resources may be performed for increased speed or quality. For example, certain portions of scenes may be rendered once and those scenes may be added as required to the rendering of the hogels to follow. In other examples, textures that may be used in the rendering of multiple hogels may be loaded in the graphics processing unit and then recalled later during the hogel rendering as required. Other examples where retained resources are created, retained, and used later may include the use of display lists, vertex buffer objects, etc.

In some embodiments, multiple nodes may be used to perform rendering in parallel. That is, each node may perform rendering serally using a single graphics processing unit within the node and multiple nodes may in addition perform rendering in parallel to each other. A group of hogels to be rendered may be divided into sets and each set may be assigned to one of the multiple nodes. Each node may then serially render the hogels assigned to that node.

For additional discussion on hogels and hogel light modulators, please see U.S. patent application Ser. No. 12/258,438, filed 26 Oct. 2008, entitled “Systems and Methods for Calibrating a Hogel Display” and naming Mark E. Lucente as inventor. The above-referenced patent application is hereby incorporated by reference herein in its entirety.

FIG. 1 is a block diagram illustrating a system for serially rendering 3D data to hogel data, in accordance with some embodiments.

3D data source 110 is configured to provide and/or generate 3D data and/or commands. In some embodiments, the 3D data source 110 may provide computer graphics 3D data/commands in specific graphics languages such as OpenGL and DirectX. In other embodiments, other types of 3D data may be provided and/or generated by 3D data source 110. In some embodiments, the 3D data received may be substantially similar to what a typical 3D application may generate. That is, the 3D data/commands received may be substantially the same as the 3D data/commands that the application may send to a graphics processing unit for rendering 2D views for displaying on a 2D display.

In some embodiments, rendering node 115 may be configured to receive the 3D data/commands and to use the data to render multiple hogel views. In some embodiments, rendering node 115 may comprise a single graphics processing unit such as graphics processing unit 120, which is coupled to one or more memory units 125. Rendering node 115 may also comprise additional processors and memory units and other supporting units.

In some embodiments, the received 3D data stream may be buffered in memory units 125. In some embodiments, the 3D data may be rendered/processed one frame at a time. In order to serially render each hogel view using the single graphics processing unit 120, the 3D data may be retrieved from the buffer and “replayed” by graphics processing unit 120 for each hogel view to be rendered. In some embodiments, graphics processing unit 120 receives each 3D data stream in a process similar to receiving the 3D data stream from 3D data source 110.

In some embodiments, part of the rendering process or part of setting up the rendering process may be performed prior to the rendering of the hogel views. For example, certain rendering resources may be created and retained for use later during the renderings. In some embodiments, the creation and retaining of these resources may be performed for increased speed or quality. For example, certain portions of scenes may be rendered once and those scenes may be added as required to the rendering of the hogels to follow. In other examples, textures that may be used in the rendering of multiple hogels may be loaded in the graphics processing unit and then recalled later during the hogel rendering as required. Other examples where retained resources are created, retained, and used later may include the use of display lists, vertex buffer objects, etc.

FIG. 2 is a block diagram illustrating a system for serially and/or in parallel rendering 3D data to hogel data, in accordance with some embodiments.

3D data source 210 is configured to provide and/or generate 3D data and/or commands. In some embodiments, the 3D data source 210 may provide computer graphics 3D data/commands in specific graphics languages such as OpenGL and DirectX. In other embodiments, other types of 3D data may be provided and/or generated by 3D data source 210. In some embodiments, the 3D data received may be substantially similar to what a typical 3D application may generate. That is, the 3D data/commands received may be substantially the same as the 3D data/commands that the application may send to a graphics processing unit for rendering 2D views for displaying on a 2D display.

In some embodiments, group of rendering nodes 215 comprises multiple rendering nodes such as rendering nodes 1-N. Each of the rendering nodes may be configured to receive the 3D data/commands and to use the data to render multiple hogel views. In some embodiments, each rendering node may comprise a single graphics processing unit and one or more memory units. In some embodiments, the received 3D data stream may be distributed to all the rendering nodes and may be buffered in memory units of each node. In some embodiments, the 3D data may be rendered/processed one frame at a time. In order to serially render a different hogel view within each rendering node, the 3D data may be retrieved from the buffer of each node and replayed by each of the graphics processing units for each different hogel view to be rendered.

In some embodiments, hogel view rendering may proceed in series within each of the rendering nodes while hogel views are being rendered in parallel across the rendering nodes.

FIG. 3 is a block diagram illustrating a system for synchronously distributing 3D data to one or more rendering nodes, in accordance with some embodiments.

3D data source 310 is configured to provide and/or generate 3D data and/or commands. In some embodiments, the 3D data source 310 may provide computer graphics 3D data/commands in specific graphics language formats such as in the OpenGL or DirectX graphics language. In other embodiments, other types of 3D may be provided and/or generated by 3D data source as described, for example, above.

Distribution and synchronization service 315 is configured to receive the 3D data/commands and to distribute the 3D data/commands to one or more rendering nodes 320. In some embodiments, the distribution and synchronization service 315 is configured to provide an interface between 3D data source 310 and one or more rendering nodes 320. Distribution and synchronization service 315 may be, for example, configured to synchronize the data transfer and processing between one or more rendering nodes 320 and 3D data source 310.

In some embodiments, distribution and synchronization service 315 may comprise one or more processors 325 and one or more memory units 330 coupled to one or more processors 325. In some embodiments, one or more processors 325 and one or more memory units 330 are configured to implement the functionality of distribution and synchronization service 315. In other embodiments, one or more processors 324 and one or more memory units 330 may be configured to implement the functionality of the whole system, including the functionality of one or more rendering nodes 320.

In some embodiments one or more rendering nodes 320 may be configured to receive a subset of the 3D data from distribution and synchronization service 315 and to render the subset of the 3D data into hogel data. In embodiments where the 3D data is computer 3D graphics data, one or more rendering nodes 320 may include one or more GPUs and other graphics units that are configured to render the 3D data into the multiple 2D views of the hogel data. The GPUs may be used in parallel and/or in series to accomplish the rendering of each subset of the 3D data. First, portions of each subset of hogel data may be assigned to each GPU. Upon completion of the first portions of hogel data, second portions of hogel data may be assigned to each GPU, etc. until the subset of hogel data assigned to the rendering node has been completed. In some embodiments, each node may buffer the 3D data stream locally in order to “replay” the 3D data stream each time a graphics processing unit requires the stream for rendering. Generally, one or more rendering nodes 320 may be each configured to convert multiple types of 3D data into a subset of the hogel data.

In some embodiments, when each rendering node completes rendering the subset of hogel data assigned to that rendering node, each rendering node is configured to issue a rendering complete or a ready command to indicate the completion. In some embodiments, the distribution and synchronization service 315 may be configured to receive the rendering complete commands issued by each of the rendering nodes, and in response, distribution and synchronization service 315 may be configured to issue an all rendering complete command to the rendering nodes. In some embodiments, the rendering nodes may, for example, wait for such a command before outputting/forwarding the rendered hogel data substantially simultaneously to a hogel light modulator or other device.

In some embodiments, distribution and synchronization service 315 may also be configured to forward the all rendering complete command to the 3D data source in order to enable 3D data source 310 to send additional 3D data/commands (corresponding to the next frame, for example) to distribution and synchronization service 315.

In some embodiments, one or more rendering nodes 320 may also be configured to issue forwarding/output complete commands to distribution and synchronization service 315 in response to the rendering nodes completing the outputting/forwarding of rendered hogel data to another device, such as a hogel light modulator, for example. In some embodiments, distribution and synchronization service 315 may be configured to receive the forwarding complete commands from the rendering nodes and to issue an all forwarding complete command to the 3D data source 310 in response to receiving forwarding complete commands from all the rendering nodes. In some embodiments, 3D data source 310 may be configured to send additional 3D data to distribution and synchronization service 315 in response to receiving the all forwarding complete command from the distribution and synchronization service. In some embodiments, 3D data source 310 may send additional 3D data (such as the next frame of 3D data, for example) in response to either receiving the all rendering complete command or the all outputting/forwarding complete command.

FIG. 4 is a flow diagram illustrating a method for serially rendering 3D data to hogel data, in accordance with some embodiments. It should be noted that, in some embodiments, the methods described here may be performed by the system described in FIG. 1 though FIG. 3.

Processing begins at 400 where, at block 410, a set of 3D data is received at a node. In some embodiments, the node may comprise a single graphics processing unit configured to render multiple hogel views using the 3D data. In some embodiments, the received 3D data may be data generated by 3D application executing on a work station.

At block 415, at least a subset of the received 3D data may be stored at the node, and at block 420, the graphics processing unit renders a first hogel view using the subset of the 3D data.

At block 425, a second hogel view is rendered using the subset of 3D data. The rendering of the second hogel view is performed by the graphics processing unit substantially in series to the rendering of the first hogel view by the graphics processing unit.

Processing subsequently ends at 499.

FIG. 5 is a flow diagram illustrating a method for rendering serially and/or in parallel 3D data to hogel data, in accordance with some embodiments. It should be noted that, in some embodiments, the methods described here may be performed by the system described in FIG. 1 though FIG. 3.

Processing begins at 500 where, at block 510, a set of 3D data is received at a first node and at a second node. In some embodiments, the first node comprises a single graphics processing unit and the second node comprises a single graphics processing unit. In some embodiments, both nodes may be configured to convert the received 3D data into multiple hogel views.

At block 515, at least a subset of the set of 3D data is stored at the first node and at the second node in respective buffers.

At block 520, a first hogel view is rendered from the subset of the 3D data using the graphics processing unit of the first rendering node, and at block 525, at least second hogel view is rendered from the subset of 3D data also using the graphics processing unit of the first rendering node. The rendering of the second hogel view is performed substantially in series to the rendering of the first hogel view.

At block 530, a third hogel view may be rendered from the subset of 3D data using the graphics processing unit in the second rendering node. In some embodiments, the rendering may be performed substantially in parallel to the rendering at the first node.

At block 535, at least a fourth hogel view is rendered from the subset of 3D data using the second graphics processing unit. In some embodiments, the rendering of the fourth hogel view is performed substantially in series to the rendering of the first hogel view, and the rendering is performed substantially in parallel to the rendering at the first node.

Those of skill will appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Those of skill in the art may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention.

The previous description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.

The benefits and advantages that may be provided by the present invention have been described above with regard to specific embodiments. These benefits and advantages, and any elements or limitations that may cause them to occur or to become more pronounced are not to be construed as critical, required, or essential features of any or all of the claims. As used herein, the terms “comprises,” “comprising,” or any other variations thereof, are intended to be interpreted as non-exclusively including the elements or limitations which follow those terms. Accordingly, a system, method, or other embodiment that comprises a set of elements is not limited to only those elements, and may include other elements not expressly listed or inherent to the claimed embodiment.

While the present invention has been described with respect to a limited number of embodiments, those skilled in the art will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover all such modifications and variations as fall within the true spirit and scope of this present invention. 

1. A method for rendering hogels, the method comprising: receiving a set of 3D data at a node, the node comprising a graphics processing unit; storing at least a subset of the set of 3D data in a buffer; rendering a first hogel view from the subset of 3D data using the graphics processing unit; and rendering a second hogel view by accessing the stored subset of 3D data using the graphics processing unit, where the rendering of the second hogel view is performed substantially in series to the rendering of the first hogel view.
 2. The method of claim 1, further comprising: receiving the set of 3D data at another node, the other node comprising another graphics processing unit, the other graphics processing unit being configured to render substantially in parallel to the graphics processing unit; storing at least the subset of the set of 3D data in another buffer; and rendering another hogel view from the subset of 3D data using the other graphics processing unit.
 3. The method of claim 1, where the 3D data comprises 3D graphics data and commands generated by a 3D application for a graphics processing unit generating 2D views for a 2D displays.
 4. The method of claim 2, further comprising: creating one or more rendering resources; and using the one or more rendering resources in the rendering of subsequent hogel views.
 5. A system for rendering hogels, the system comprising: one or more processors; and one or more memory units coupled to the processor, the system being configured to: receive a set of 3D data at a node, the node comprising a graphics processing unit; store at least a subset of the set of 3D data in a buffer; render a first hogel view from the subset of 3D data using the graphics processing unit; and render a second hogel view by accessing the stored subset of 3D data using the graphics processing unit, where the rendering of the second hogel view is performed substantially in series to the rendering of the first hogel view.
 6. The system of claim 5, the system being further configured to: receive the set of 3D data at another node, the other node comprising another graphics processing unit, the other graphics processing unit being configured to render substantially in parallel to the graphics processing unit; store at least the subset of the set of 3D data in another buffer; and render another hogel view from the subset of 3D data using the other graphics processing unit.
 7. The system of claim 5, where the 3D data comprises 3D graphics data and commands generated by a 3D application for a graphics processing unit generating 2D views for a 2D displays.
 8. The system of claim 7, the system being further configured to: create one or more rendering resources; and use the one or more rendering resources in the rendering of subsequent hogel views.
 9. A computer program product stored on a computer operable medium, the computer program product comprising software code being effective to: receive a set of 3D data at a node, the node comprising a graphics processing unit; store at least a subset of the set of 3D data in a buffer; render a first hogel view from the subset of 3D data using the graphics processing unit; and render a second hogel view by accessing the stored subset of 3D data using the graphics processing unit, where the rendering of the second hogel view is performed substantially in series to the rendering of the first hogel view.
 10. The product of claim 9, the system being further configured to: receive the set of 3D data at another node, the other node comprising another graphics processing unit, the other graphics processing unit being configured to render substantially in parallel to the graphics processing unit; store at least the subset of the set of 3D data in another buffer; and render another hogel view from the subset of 3D data using the other graphics processing unit.
 11. The product of claim 9, where the 3D data comprises 3D graphics data and commands generated by a 3D application for a graphics processing unit generating 2D views for a 2D displays.
 12. The product of claim 10, the system being further configured to: create one or more rendering resources; and use the one or more rendering resources in the rendering of subsequent hogel views. 